package com.encol.common.utils;

import java.util.HashMap;

/**
 * @Author:Encol
 * @Date:11:48 2021/9/24
 * @Description:
 */
public class R extends HashMap<String, Object> {
    public R() {
        super.put("code", 0);
        super.put("msg", "success");
    }

    //静态的话可以直接通过类名去点调用
    //响应成功但调用R的无参构造，无携带提示信息
    public static R ok() {
        return new R();
    }

    //响应成功并携带提示信息
    public static R ok(String msg) {
        R r = new R();
        //新加
        r.put("code", 0);
        r.put("msg", msg);
        return r;
    }

    //响应失败并携带提示信息
    public static R error(String msg) {
        R r = new R();
        r.put("code", 500);
        r.put("msg", msg);
        return r;
    }

    //不能直接返回一个new R，它无参构造里面添加了属性是成功的
    public static R error() {
        R r = new R();
        r.put("code", 500);
        r.put("msg", "error");
        return r;
    }

    //不知道成功失败，所以都调这个方法，要把成功失败都加进来
    public static R out(Object flag) {
        if (flag instanceof Boolean) {
            //要将flag强转为boolean
            if ((boolean) flag) {
                return R.ok();
            } else {
                return R.error();
            }
        } else if (flag instanceof Integer) {
            //要将flag强转为integer,修改数据返回值为受影响行数
            if ((Integer) flag>0) {
                return R.ok();
            } else {
                return R.error();
            }
        }
        return R.error();
    }

    //controller查询需要返回数据时
    public static R putData(String key,Object value){
        R r = new R();
        r.put(key, value);
        return r;
    }
}

